import { get, post } from '@/service/request'

export function getCarQueue(params: CarQueryParams) {
  return get<QueueVehicle[]>('/lxdd/loadCarQueue/loadCarQueueList', params)
}
// 调整车辆顺序
export function updateCarQueueRequest(data: Pick<QueueVehicle, 'id'> & { order: MoveType }) {
  return post('/lxdd/loadCarQueue/modifySortOrder', data)
}
// 编辑装货中的车
export function updateLoadingCarRequest(data: Pick<QueueVehicle, 'id' | 'carNumber' | 'outlet'>) {
  return post('/lxdd/loadCarQueue/replaceLoadingCar', data)
}

// 查询待排队车辆
export function getCarAddTableData(params: AddCarSearchParams) {
  return get<PageDataResponse<AddCar>>('/lxdd/loadCarQueue/waitInlineCarPager', params)
}

// 新增排队车辆
export function addCarRequest(data: { onlineCarId: string }) {
  return post('/lxdd/loadCarQueue/addCarQueue', data)
}

// 获取当前搅拌站装料口信息
export function getLOutletList(params: { mixingStationCode: string }) {
  return get<Outlet[]>('/lxdd/loadCarQueue/findOutletDownList', params)
}
// 取消排队
export function cancelCarQueueRequest(data: { id: string }) {
  return post('lxdd/loadCarQueue/cancelCarQueue', data)
}
export interface CarQueryParams {
  status: 1 | 2
  mixingStationCode: string // 	搅拌站编码
}
// 操作类型
export const enum MoveType {
  'MOVE_TOP' = -1,
  'MOVE_BOTTOM' = -2,
  'MOVE_UP' = 1,
  'MOVE_DOWN' = 2
}

export interface AddCarSearchParams extends PageQuery {
  carNumberFuzzy: string
  mixingCarCodeFuzzy: string
  mixingStationNumber: string
}

export interface QueueVehicle {
  id: string
  carCode: string // 车辆编号
  carNumber: string // 车牌号
  createBy: string // 创建者
  createTime: string // 创建时间
  deviceId: string // 设备号
  mixingStationCode: string // 站点编码
  mixingStationName: string // 站点名称
  outlet: string // 装料口
  ratedVolume: string // 额定容量(单位: 立方米)
  sortOrder: string // 排号
  status: 1 | 2 // 车辆状态: 1排队中 2装货中
  updateBy: string // 更新者
  updateTime: string // 更新时间
}
export interface AddCar {
  id: string
  carNumber: string
  mixingCarCode: string // 搅拌车号
  onlineStatus: 1 | 0 // 	上线状态: 0离线 1上线
  weightLimit: number // 核载重量
}

export interface Outlet {
  code: number // 出料口名称编码
  outlet: string // 出料口名称
}
